package hch.redesFerroviarias;

import hch.utils.Buffer;
import hch.utils.Sentido;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;

public class EstacionTrasbordo extends Estacion implements Runnable{
	static Buffer pasajerosTrasbordo= new Buffer();
	private RedFerroviaria redFerr;

	public EstacionTrasbordo(int id, int andenes, RedFerroviaria red) {
		super(id, andenes);
		this.redFerr = red;
	}

	
	public void run() {
		Socket socketCliente = null;
		try {
			 socketCliente = new Socket("localhost",1234);
			 PrintStream enviarPasajero = new PrintStream(socketCliente.getOutputStream());
			 BufferedReader recibirPasajero = new BufferedReader(new InputStreamReader(socketCliente.getInputStream()));
			 new ThreadHacerTrasbordo(enviarPasajero).start();
			 while(true){
				 String[] datosPasajero = recibirPasajero.readLine().split("-");
				 new Pasajero(Integer.parseInt(datosPasajero[0]), this.getId(), Integer.parseInt(datosPasajero[1]), this.redFerr).start();
				 System.err.println("Ha llegado un pasajero a la Red Ferroviaria");
			 }
		} catch (Exception e) {} 
	}
	
	@Override
	public String toString() {
		String estacion = " | E"+id+" T " +" <"+this.nroAndenes+"> "+"("+this.cantidadPasajeros +") "+ this.trenes + "\n";
		List<Tren> trenesDerecha   = new ArrayList<Tren>();
		List<Tren> trenesIzquierda = new ArrayList<Tren>();
		for (Tren tren : this.trenesEnEspera) {
			if(tren.getSentido() == Sentido.DERECHA)
				trenesDerecha.add(tren);
			else
				trenesIzquierda.add(tren);
		}
		return " | " + trenesDerecha + "\n" + estacion + " | " + trenesIzquierda;
	}
	
	

}
